<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/angular-1.3.0.js"></script>
</head>
<body>
    <div ng-controller="myCtrl">
        <button ng-click="btn_click1('morning')">button1</button>
    </div>
    <script type="application/javascript">
        var app = angular.module("app",[]);
        // factory定义服务
        app.config(function ($provide) {
            $provide.factory("show",["$window",function ($window) {
                return{
                    say : function (t) {
                        $window.alert(t);
                    }
                }
            }]);
        });
        // 标记式注入
        // 向函数中注入了2个，注入的服务名和顺序必须与函数在构造时的参数名和顺序完全一致。
        // 正是由于服务名和函数参数名在名称和顺序的一一对应关系，使得服务名与函数体绑定在一起，且这种标记式的注入声明可以在压缩混淆后的代码中执行。
        var test = function ($scope,show) {
            $scope.btn_click1 = function (t) {
                show.say(t);
            };
        };
        // 标记需要注入的服务对象
        test.$inject = ["$scope","show"];
        // 自定义控制器层
        app.controller("myCtrl",test);
    </script>
</body>
</html>